#ifndef __PID_CTRL_H__
#define __PID_CTRL_H__

#include <stdint.h>

typedef struct {
    float kp;           // 比例系数
    float ki;           // 积分系数
    float kd;           // 微分系数
    float target;       // 目标值
    float prev_error;   // 上一次误差
    float integral;     // 积分项
    float max_integral; // 积分限幅
    float dt;           // 时间间隔
} pid_ctrl_t;

// 初始化PID控制器
void pid_ctrl_init(pid_ctrl_t* pid, float kp, float ki, float kd, float dt);

// 设置目标值
void pid_ctrl_set_target(pid_ctrl_t* pid, float target);

// 计算PID输出
float pid_ctrl_update(pid_ctrl_t* pid, float error);

// 重置PID控制器
void pid_ctrl_reset(pid_ctrl_t* pid);

#endif